# -*- coding: UTF-8 -*- #
"""
-------真正的勇士， 敢于直面惨淡的Warning、 敢于正视淋漓的Error-----
@author : 贾鹏博
@file : app.py
@time : 2022/6/15 22:10
"""

from apptest.Logger import *
from appium.webdriver.common.appiumby import AppiumBy
from appium import webdriver
from apptest.QiYeWeiXin_PO.page.main_page import MainPage
from apptest.QiYeWeiXin_PO.base.base_page import BagePage


# 启动、重启、关闭

class App(BagePage):

    def start(self):
        # 启动 app
        # 资源初始化
        # 打开【企业微信】应用
        if self.driver == None:
            logger.info("driver == None")
            caps = {}
            caps["platformName"] = "Android"
            # adb logcat ActivityManager:I | findstr "cmp" 获取
            caps["appPackage"] = "com.tencent.wework"
            caps["appActivity"] = ".launch.LaunchSplashActivity"
            # 通过 adb devices 获取
            caps["deviceName"] = "emulator-5554"
            # "True" 是绝对不可以的  要么是"true" 要么是 True
            # 不清理缓存（比如之前已经登录）
            caps["noReset"] = "true"
            # 尽量不要在真实的测试环境下设置使用
            caps["dontStopAppOnReset"] = "true"
            # 创建driver ,与appium server建立连接，返回一个 session
            # driver 变成 self.driver 由局部变量变成实例变量，就可以在其它的方法中引用这个实例变量了
            self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
            self.set_implicitly(self.implicitly_wait_time)
        else:
            logger.info("driver 已存在，复用已有的 driver ")
            # 会自动启动 desire caps 记录的页面.复用浏览器
            self.driver.launch_app()
        return self

    def restart(self):
        self.driver.close()
        self.driver.launch_app()

    def quit(self):
        self.driver.quit()

    def goto_main(self):
        # 入口
        return MainPage(self.driver)
